From 62808722d269b538809a5aabdd3341af2740a221 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Exp=C3=B3sito?= Date: Tue, 22 Jun 2021 18:44:05 +0200 Subject: [PATCH] kineticscrolling: Add stop function Move the logic to stop kinetic scrolling to its own function and allow to call it from the outside. Part-of: --- gtk/gtkkineticscrolling.c | 14 +++++++++++--- gtk/gtkkineticscrollingprivate.h | 2 ++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/gtk/gtkkineticscrolling.c b/gtk/gtkkineticscrolling.c index 87618acd7c..4eab5dcc84 100644 --- a/gtk/gtkkineticscrolling.c +++ b/gtk/gtkkineticscrolling.c @@ -202,9 +202,7 @@ gtk_kinetic_scrolling_tick (GtkKineticScrolling *data, else if (fabs(data->velocity) < 1 || (last_time != 0.0 && fabs(data->position - last_position) < 1)) { - data->phase = GTK_KINETIC_SCROLLING_PHASE_FINISHED; - data->position = round(data->position); - data->velocity = 0; + gtk_kinetic_scrolling_stop (data); } break; } @@ -249,3 +247,13 @@ gtk_kinetic_scrolling_tick (GtkKineticScrolling *data, return data->phase != GTK_KINETIC_SCROLLING_PHASE_FINISHED; } +void +gtk_kinetic_scrolling_stop (GtkKineticScrolling *data) +{ + if (data->phase == GTK_KINETIC_SCROLLING_PHASE_DECELERATING) + { + data->phase = GTK_KINETIC_SCROLLING_PHASE_FINISHED; + data->position = round (data->position); + data->velocity = 0; + } +} diff --git a/gtk/gtkkineticscrollingprivate.h b/gtk/gtkkineticscrollingprivate.h index a531ace476..a519bd7ec0 100644 --- a/gtk/gtkkineticscrollingprivate.h +++ b/gtk/gtkkineticscrollingprivate.h @@ -50,6 +50,8 @@ gboolean gtk_kinetic_scrolling_tick (GtkKineticScrolling *data, double *position, double *velocity); +void gtk_kinetic_scrolling_stop (GtkKineticScrolling *data); + G_END_DECLS #endif /* __GTK_KINETIC_SCROLLING_H__ */ -- 2.30.2